machine user
machine accountとも
CI/CD等のための、人間でないアカウント、アクセス権限のこと
以下のように、githubの規約上に「machine user」「machine account」という言葉が定義されている
https://songmu.jp/riji/entry/2019-07-29-go-private-modules.html
そういった用途に関して、GitHubのDeveloper Guideにも"Machine users"という項でドンピシャで説明されています。ここでは、accountではなくusersになっています。
ref. https://developer.github.com/v3/guides/managing-deploy-keys/#machine-users
If your server needs to access multiple repositories, you can create a new GitHub account and attach an SSH key that will be used exclusively for automation.
https://help.github.com/en/github/site-policy/github-terms-of-service#3-account-requirements
https://qiita.com/n_slender/items/886d9313a5ab5877dbf9
他のクラウドサービスにおいて
Azureでもサービスプリンシパルというものがある
GCPだとサービスアカウント
AWSは特に無い IAMユーザを使う
CodeDeployからデプロイするならIAMロール使えるからか、あんまりIAMユーザ(つまりAWS外のリソース)用のデプロイの情報がない
---.icon
Azureのサービスプリンシパルは、「Azure AD」におけるユーザではなく、「アプリの登録」として行う
ここでいうアプリというのは、
webアプリとかのアプリではなく、
「スマホにアプリをインストール」のアプリという意味
スマホ全体の全操作権限を渡さず、部分的にスマホ内のリソースアクセスを許す
つまりAzure上のリソース操作を許すアプリ、という意味
Githubのリポジトリの操作も個別に認可することは可能だが、
オーガニゼーション全体でなにかする場合は面倒なんでmachine userを作ると楽ということ
意味的には「オーガニゼーションに対してアプリ登録」というような実装がありうるかもしれないが
machine userというやり方なら一切実装を増やさなくても同等の働きをしてくれるので、
せいぜい規約で許すだけなので一番ラクができる
AWSはIAMユーザというのがある
これを人間用や機械用で作成して、違いがない感じだろうか?
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/intro-structure.html
https://gyazo.com/8487107d9f78ff639213b6fc0f1c2616
とあるように、IAMロールあたりがそれかも
調べたら違った
IAMユーザでいいっぽい
https://dev.classmethod.jp/cloud/aws/assume-role-deploy-iam-user-and-role/#デプロイ用のiamユーザのアクセスキーを取得
https://gyazo.com/08c858add00eb1d932faf4c9dfd8f905
一つ以上を複数選択
プログラムによるアクセス
AWS API、CLI、SDK などの開発ツールの アクセスキー ID と シークレットアクセスキー を有効にします。
AWS マネジメントコンソールへのアクセス
ユーザーに AWS マネジメントコンソールへのサインインを許可するための パスワード を有効にします。